﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright company="Marek Dzikiewicz" file="KeyModifiers.cs">
//   Marek Dzikiewicz, All Rights Reserved.
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

namespace Dzikiewicz.WinApi.User.Keyboard
{
    using System;
    using System.Runtime.InteropServices;

    /// <summary>
    /// Specifies valid keyboard key modifiers.
    /// </summary>
    [Flags]
    [ComVisible(true)]
    public enum KeyModifiers
    {
        /// <summary>
        /// Either ALT key must be held down.
        /// </summary>
        ModAlt = 0x0001,

        /// <summary>
        /// Either CTRL key must be held down.
        /// </summary>
        ModControl = 0x0002,

        /// <summary>
        /// Changes the hotkey behavior so that the keyboard auto-repeat does not yield multiple hotkey notifications.
        /// </summary>
        /// <remarks>
        /// Windows Vista and Windows XP/2000: This flag is not supported.
        /// </remarks>
        ModNoRepeat = 0x4000,

        /// <summary>
        /// Either SHIFT key must be held down.
        /// </summary>
        Shift = 0x0004,

        /// <summary>
        /// Either WINDOWS key was held down. These keys are labeled with the Windows logo. Keyboard shortcuts that 
        /// involve the WINDOWS key are reserved for use by the operating system.
        /// </summary>
        Win = 0x0008
    }
}